/**
* Copyright (c) By zengqh.
*
* This program is just for fun or demo, in the hope that it  
* will be useful, you can redistribute it and/or modify freely.
*
* Time: 2013/03/16
* File: MaterialBase.h
* Blog: http://www.cnblogs.com/zengqh/
**/

#pragma once

namespace HY
{
class Parameter;
class Effect;
class MaterialBase
{
public:
	static const std::string diffuse_map_;
	static const std::string light_map_;
	static const std::string ambient_occlusion_map_;
	static const std::string emissive_map_;
	static const std::string reflection_map_;
	static const std::string reflectivity_map_;
	static const std::string normal_map_;
	static const std::string specular_map_;
	static const std::string height_map_;

public:
	MaterialBase(const std::string& name);
	virtual ~MaterialBase();

	virtual Parameter* getParameter(const std::string& name) const;

	virtual bool loadByFileName(const std::string& file_name);

protected:
	ParameterManager*				param_mgr_;
	std::string						name_;
	std::vector<MaterialBase*>		mat_list_;
};

}
